/*
parametros: str1 - string a ser comparado.
str2 - string a ser comparado.

retorno: 0 si son iguales, y la resta del primer caracter que no coincide en otro caso.
*/
int strcmp(char* str1, char * str2) {
    int i;
    for (i = 0; str1[i] != '\0' && str1[i] != '\0'; i++) {
        if (str1[i] != str2[i]) {
            return str1[i] - str2[i];
        }
    }
    if (str1[i] == '\0' && str2[i] == '\0') {
        return str1[i] - str2[i];
    }
    return 1;
}

/*
parametros: str_des - direccion de memoria donde escrivir.
str_ori - direccione de memoria de donde leer.
copia un string de un lugar a otro de memoria.
*/
void strcpy(char * str_des, char * str_ori) {
    int i;
    for (i = 0; str_ori[i] != '\0'; i++) {
        str_des[i] = str_ori[i];
    }
    str_des[i] = '\0';
}

/*
igual a strcpy pero con un maximo de caracteres a copiar.
*/
void strncpy(char * str_des, char * str_ori, unsigned int count) {
    int i;
    for (i = 0; str_ori[i] != '\0' && i<=count; i++) {
        str_des[i] = str_ori[i];
    }
    str_des[i] = '\0';
}

void memcpy(char * str_des, char * str_ori, unsigned int count){
    int i;
    for (i = 0; i<=count; i++) {
        str_des[i] = str_ori[i];
    }
}

/*
parametros: str - string a medir.
retrno: tamaño del string.
*/
int strlen(char* str) {
    int i;
    for (i = 0; str[i] != '\0'; i++);
    return i;
}

